package com.stark.commons.lang.jdbc;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * 数据库操作接口。
 * @author Ben
 * @since 1.0.0
 * @version 1.0.0
 */
public interface DBOperations {
	
	/**
	 * 查询并返回 {@link Integer} 类型结果。
	 * @param sql SQL 语句。
	 * @return 查询结果 {@link Integer} 。
	 * @throws SQLException
	 */
	int queryForInt(String sql) throws SQLException;
	
	/**
	 * 查询并返回 {@link Integer} 类型结果。
	 * @param sql SQL 语句。
	 * @param args 参数列表。
	 * @return 查询结果 {@link Integer} 。
	 * @throws SQLException
	 */
	int queryForInt(String sql, Object... args) throws SQLException;
	
	/**
	 * 查询并返回 {@link List} 类型结果。
	 * @param sql SQL 语句。
	 * @return 查询结果 {@link List} 。
	 * @throws SQLException
	 */
	List<Map<String, Object>> queryForList(String sql) throws SQLException;
	
	/**
	 * 查询并返回 {@link List} 类型结果。
	 * @param sql SQL 语句。
	 * @param args 参数列表。
	 * @return 查询结果 {@link List} 。
	 * @throws SQLException
	 */
	List<Map<String, Object>> queryForList(String sql, Object... args) throws SQLException;
	
	/**
	 * 插入或更新操作。
	 * @param sql SQL 语句。
	 * @return 影响行数。
	 * @throws SQLException
	 */
	int update(String sql) throws SQLException;
	
	/**
	 * 插入或更新操作。
	 * @param sql SQL 语句。
	 * @param args 参数列表。
	 * @return 影响行数。
	 * @throws SQLException
	 */
	int update(String sql, Object... args) throws SQLException;

}
